/*
 * Copyright (C) 2012 CyberAgent
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.acenodie.acenodieopenglturorial.filter;

public enum Rotation {
	NORMAL, ROTATION_90, ROTATION_180, ROTATION_270;

	/**
	 * Retrieves the int representation of the Rotation.
	 *
	 * @return 0, 90, 180 or 270
	 */
	public int asInt() {
		switch (this) {
		case NORMAL:
			return 0;
		case ROTATION_90:
			return 90;
		case ROTATION_180:
			return 180;
		case ROTATION_270:
			return 270;
		default:
			throw new IllegalStateException("Unknown Rotation!");
		}
	}

	/**
	 * Create a Rotation from an integer. Needs to be either 0, 90, 180 or 270.
	 *
	 * @param rotation
	 *            0, 90, 180 or 270
	 * @return Rotation object
	 */
	public static Rotation fromInt(int rotation) {
		switch (rotation) {
		case 0:
			return NORMAL;
		case 90:
			return ROTATION_90;
		case 180:
			return ROTATION_180;
		case 270:
			return ROTATION_270;
		case 360:
			return NORMAL;
		default:
			throw new IllegalStateException(
					rotation + " is an unknown rotation. Needs to be either 0, 90, 180 or 270!");
		}
	}
}
